#include <iostream>
#include <cmath>
using namespace std;
typedef long long LL;
#define endl '\n'
const int N = 15;
const double eps = 1e-7;
int n;
double a[N][N];
double tmp[N];

bool zero(double x)
{
    return fabs(x) < eps;
}

void guass()
{
    for(int i = 1; i <= n; i++)
    {
        int aim = i;
        for(int j = 1; j <= n; j++)
        {
            if(j < i && !zero(a[j][j])) continue;
            if(fabs(a[aim][i]) < fabs(a[j][i])) aim = j;
        }
        
        for(int j = 1; j <= n + 1; j++) swap(a[i][j], a[aim][j]);

        for(int j = n + 1; j >= i; j--) a[i][j] /= a[i][i];

        for(int j = 1; j <= n; j++)
        {
            if(j == i) continue;
            double t = a[j][i] / a[i][i];
            for(int k = i; k <= n + 1; k++) a[j][k] -= a[i][k] * t;
        }
    }
}

void solve() 
{
    cin >> n;
    for(int i = 1; i <= n; i++) cin >> tmp[i];

    for(int i = 1; i <= n; i++)
    {
        double SquR = 0; 
        for(int j = 1; j <= n; j++)
        {
            double x; cin >> x;
            a[i][j] = 2 * (x - tmp[j]);
            SquR += x * x - tmp[j] * tmp[j];
        }
        a[i][n + 1] = SquR;
    }
    // for(int i = 1; i <= n; i++)
    // {
    //     for(int j = 1; j <= n + 1; j++)
    //     {
    //         cout << a[i][j] << " ";
    //     }
    //     cout << endl;
    // }
    guass();

    for(int i = 1; i <= n; i++) printf("%.3lf ", a[i][n + 1]);

}

int main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int T = 1;
	// cin >> T;
	while(T--)
	{
        solve();
	}
	return 0;
}